package rg_opt

type W无参数 struct {
}

type P配置修改内容配置 struct {
	// @alias 名称
	M名称 string `alias:"名称"`
	// @alias 读取协议编号
	D读取协议编号 string `alias:"读取协议编号"`
	// @alias 修改协议编号
	X修改协议编号 string `alias:"修改协议编号"`
	// @alias 对象约束编号
	D对象约束编号 string `alias:"对象约束编号"`
}

type S数据修改配置 struct {
	// @alias 名称
	M名称 string `alias:"名称"`
	// @alias 读取协议编号
	D读取协议编号 string `alias:"读取协议编号"`
	// @alias 修改协议编号
	X修改协议编号 string `alias:"修改协议编号"`
	// @alias 对象约束编号
	D对象约束编号 string `alias:"对象约束编号"`
	// @alias 字段信息
	Z字段信息 []*S数据修改字段 `alias:"字段信息"`
}

type S数据修改字段 struct {
	// 字段的名称
	// @alias 字段名
	Z字段名 string `alias:"字段名"`
	// 显示的名称
	// @alias 名称
	M名称 string `alias:"名称"`
	// 是否显示
	// @alias 显示
	X显示 bool `alias:"显示"`
	// @alias 修改
	X修改 bool `alias:"修改"`
	// @alias 提示
	T提示 string `alias:"提示"`
	// @alias 必填
	B必填 bool `alias:"必填"`
	// @alias 条件
	T条件 string `alias:"条件"`
}

type S数据读取配置 struct {
	// @alias 名称
	M名称 string `alias:"名称"`
	// @alias 读取协议编号
	D读取协议编号 string `alias:"读取协议编号"`
	// @alias 对象约束编号
	D对象约束编号 string `alias:"对象约束编号"`
	// @alias 删除协议编号
	S删除协议编号 string `alias:"删除协议编号"`
	// @alias 字段信息
	Z字段信息 []*S数据读取字段 `alias:"字段信息"`
}

type S数据读取字段 struct {
	// 字段的名称
	// @alias 字段名
	Z字段名 string `alias:"字段名"`
	// 显示的名称
	// @alias 名称
	M名称 string `alias:"名称"`
	// 是否显示
	// @alias 显示
	X显示 bool `alias:"显示"`
	// @alias 宽度
	// @alias 提示
	T提示 string `alias:"提示"`
}

type S数据创建配置 struct {
	// @alias 名称
	M名称 string `alias:"名称"`
	// @alias 创建协议编号
	C创建协议编号 string `alias:"创建协议编号"`
	// @alias 对象约束编号
	D对象约束编号 string `alias:"对象约束编号"`
	// @alias 字段信息
	Z字段信息 []*S数据创建字段 `alias:"字段信息"`
}

type S数据创建字段 struct {
	// 字段的名称
	// @alias 字段名
	Z字段名 string `alias:"字段名"`
	// 显示的名称
	// @alias 名称
	M名称 string `alias:"名称"`
	// @alias 修改
	X修改 bool `alias:"修改"`
	// @alias 初始值
	C初始值 string `alias:"初始值"`
	// @alias 必填
	B必填 bool `alias:"必填"`
	// 服务器校验使用
	// @alias 条件
	T条件 []string `link:"数据表条件"`
}

type S数据列表配置 struct {
	// @alias 名称
	M名称 string `alias:"名称"`
	// @alias 读取协议编号
	D读取协议编号 string `alias:"读取协议编号"`
	// @alias 删除协议编号
	S删除协议编号 string `alias:"删除协议编号"`
	// 列表项对象的约束编号
	// @alias 对象约束编号
	D对象约束编号 string `alias:"对象约束编号"`
	// @alias 过滤器
	G过滤器 []*S数据过滤器 `alias:"过滤器"`
	// @alias 行数
	H行数 []int `alias:"行数"`
	// @alias 字段信息
	Z字段信息 []*S数据列表字段 `alias:"字段信息"`
	// 允许的排序字段数量，点击环形替代
	// @alias 排序字段数
	P排序字段数 int `alias:"排序字段数" value:"1"`
	// @alias 排序初始
	P排序初始 []*S数据排序 `alias:"排序初始"`
}

type S数据列表字段 struct {
	// 字段的名称
	// @alias 字段名
	Z字段名 string `alias:"字段名"`
	// 显示的名称
	// @alias 名称
	M名称 string `alias:"名称"`
	// 是否显示
	// @alias 显示
	X显示 bool `alias:"显示"`
	// @alias 宽度
	K宽度 int `alias:"宽度"`
	// @alias 提示
	T提示 string `alias:"提示"`
	// 允许表格修改排序
	// @alias 排序
	P排序 bool `alias:"排序"`
	// 允许表格修改过滤器
	// @alias 过滤器
	G过滤器 bool `alias:"过滤器"`
}
type S数据排序 struct {
	// 字段名
	// @alias 字段名
	Z字段名 string `alias:"字段名"`
	// 0-无 1 升序 -1 降序
	// @alias 排序
	P排序 int `alias:"排序"`
}

type S数据过滤器 struct {
	// 字段名
	// @alias 字段名
	Z字段名 string `alias:"字段名"`
	// todo: 允许添加新的过滤项
	// * 数字类型的想限制范围
	// * 包含多个指定值（$in)
	// @alias 允许多个
	Y允许多个 bool `alias:"允许多个"`
	// 根据字段类型有默认的比较, 可通过标旗禁止默认的比较
	// @alias 禁止比较标旗
	J禁止比较标旗 map[S数据过滤器比较]bool `alias:"禁止比较标旗"`
}

// @schema_go
// @schema_ts
// @alias 数据表过滤器比较
type S数据过滤器比较 int

const (
	S数据过滤器比较_不限 S数据过滤器比较 = iota
	S数据过滤器比较_包含
	S数据过滤器比较_不包含
	S数据过滤器比较_等于
	S数据过滤器比较_不等于
	S数据过滤器比较_大于
	S数据过滤器比较_大于等于
	S数据过滤器比较_小于
	S数据过滤器比较_小于等于
	S数据过滤器比较_范围
	S数据过滤器比较_范围外
)

type S数据列表参数 struct {
	// 每页行数
	// @alias 行数
	H行数 int `alias:"行数"`
	// @alias 页码
	Y页码 int `alias:"页码"`
	// @alias 过滤器
	G过滤器 []*S数据过滤器参数 `alias:"过滤器"`
	// @alias 排序
	P排序 []*S数据排序 `alias:"排序"`
}

// 如果序列化时，需要使用二进制方式，需要新建结构，指定[L列表]的类型
type S数据列表响应 struct {
	// @alias 列表
	L列表 []interface{} `alias:"列表"`
	// @alias 总数
	Z总数 int `alias:"总数"`
	// @alias 页码
	Y页码 int `alias:"页码"`
}

type S数据过滤器参数 struct {
	// @alias 字段名
	Z字段名 string `alias:"字段名"`
	// @alias 比较
	B比较 int `alias:"比较"`
	// @alias 参数
	C参数 interface{} `alias:"参数"`
}

type S数据页面参数 struct {
}

type S数据获取参数 struct {
	// @alias 编号
	B编号 string `alias:"编号"`
}

// 如果序列化时，需要使用二进制方式，需要新建结构，指定[S数据]的类型
type S数据获取响应 struct {
	// @alias 数据
	S数据 interface{} `alias:"数据"`
}

type S数据创建参数 struct {
	// @alias 数据
	S数据 interface{} `alias:"数据"`
}

type S数据修改参数 struct {
	// @alias 编号
	B编号 string `alias:"编号"`
	// @alias 数据
	S数据 interface{} `alias:"数据"`
}

type S数据删除参数 struct {
	// @alias 编号组
	B编号组 []string `alias:"编号组"`
}

type S数据关联页面响应 struct {
	// @alias 配置
	P配置 *S数据列表配置 `alias:"配置"`
}
